NSError 自定义
NSError 自定义
定制NSError
\
\
\
效果:
\
\
\
系统的NSError是可以自己定制的,以下提供代码来实现并表示如何使用:
\
YXError.h 与 YXError.m
\
\
//
// YXError.h
// CustomYXError
//
// Copyright (c) 2014年 Y.X. All rights reserved.
//
\
#import <Foundation/Foundation.h>
\
// 自行添加错误码
typedef enum : NSUInteger {
Crash = -10000,
DisConnect,
Unknow,
} YXErrorCode;
\
interface YXError : NSObject
\
- (NSError *)errorCode:(YXErrorCode)code userInfo:(NSDictionary *)dic;
- (NSString *)transformCodeToStringInfo:(YXErrorCode)code;
\
end
\
\
//
// YXError.m
// CustomYXError
//
// Copyright (c) 2014年 Y.X. All rights reserved.
//
\
#import “YXError.h”
\
static NSDictionary *errorDictionary = nil;
\
implementation YXError
\
- (void)initialize
{
if (self == [YXError class])
{
errorDictionary = \
{
/* code : errorWithDomain */
/* ==================================== */
(Crash) : “Crash”,
(DisConnect) : “DisConnect”,
(Unknow) : “Unknow”,
/* ==================================== */
};
}
}
\
- (NSError *)errorCode:(YXErrorCode)code userInfo:(NSDictionary *)dic
{
return [NSError errorWithDomain:errorDictionary[ (code)]
code:code
userInfo:dic];
}
\
- (NSString *)transformCodeToStringInfo:(YXErrorCode)code
{
return errorDictionary[ (code)];
}
\
end
\
以下是使用的代码:
\
\
//
// AppDelegate.m
// NSError
//
// Copyright (c) 2014年 YouXianMing. All rights reserved.
//
\
#import “AppDelegate.h”
#import “YXError.h”
\
implementation AppDelegate
\
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 定制一个NSError
NSError *error = [YXError errorCode:Crash
userInfo:nil];
NSLog( “% “, error);
// 翻译一个NSError(将code值翻译成字符串)
NSLog( “% “, [YXError transformCodeToStringInfo:-10000]);
return YES;
}
\
end
\
以下是自行添加错误代码的地方:
\
\
\
以下是设计的细节(其中,将字典,枚举值,字符串3者之间建立联系的做法还是很有意思的):
\
\
\